package com.zmn.oms.business.interfaces.invoice;

import com.zmn.oms.common.dto.OmsOperator;
import com.zmn.oms.common.exception.OmsBaseException;
import com.zmn.oms.common.vo.KVDict;
import com.zmn.oms.model.dto.invoice.OrderInvoiceDTO;
import com.zmn.oms.model.entity.invoice.OrderInvoice;
import com.zmn.oms.model.entity.work.OrderWork;
import com.zmn.oms.model.vo.invoice.OrderInvoiceVO;

import java.util.List;

/**
 * 类描述：订单发票
 *
 * @author lujia
 * @date 2018/12/07 10:43
 */
public interface OrderInvoiceBService {

    /**
     * 保存发票
     *
     * @param orderInvoiceDTO
     */
    void saveInvoice(OrderInvoiceDTO orderInvoiceDTO);

    /**
     * 获取可开票类型
     *
     * @param orderWork
     */
    List<KVDict> getInvoiceTypeList(OrderWork orderWork) throws OmsBaseException;

    /**
     * 获取原始发票
     *
     * @param orderWork
     */
    OrderInvoiceVO getOriginalInvoiceVO(OrderWork orderWork) throws OmsBaseException;

    /**
     * 获取可开发票最大金额
     *
     * @param orderWork
     */
    Integer getInvoiceMaxAmount(OrderWork orderWork) throws OmsBaseException;

    /**
     * 通过名称联想纳税人识别号
     * @param orderWork
     * @return
     */
    List<KVDict> getBuyerTaxNumSuggestList(String queryText);

    /**
     * 推送开票
     * @param operator
     * @return
     */
    void invoiceRemind(OmsOperator operator) throws OmsBaseException;
}
